package SpringAOPTest;

import java.util.ArrayList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.BasicConfigurator;//使用了log4j.properties文件，如果不实用这个文件可以使用这个包
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;//如果要使用绝对路径读取*.XML文件可以使用这个包

public class MainClass {

    public static void main(String[] args) throws Exception
    {
        //BasicConfigurator.configure();

        Log log = LogFactory.getLog(MainClass.class);//实例一个Log对象
        BeanFactory factory = new XmlBeanFactory(new ClassPathResource("/applicationContext.xml"));
        //通过XmlBeanFactory来读取applicationContext.xml文件

        Foo foo =(Foo)factory.getBean("bean");//此时Spring会自动调用factory.getObject方法，返回一个对象
        //此时的factory.getBean("bean")是如何的一个Foo对象的呢？他又是如何知道应该调用MyFactoryBean.getObject()
        //的方法呢？我给大家简单讲解一下BeanFactory类的getBean方法的工作原理，首先我们在实例化BeanFactory的对象的时候
        //会读取一个XML文件此时XML文件中的所有内容都将存到factory 对象的内部，每当我们调用factory.getBean("xxx")时
        //它会在自身内部寻找<bean>标签中id属性为"xxx"的bean将其注入并且实例化。


        log.info(foo.printMessage("Hello I'm Tony"));//调用这个对象的方法

    }

}